package com.woniu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu.model.Goods;
import com.woniu.params.AddGoodsParam;
import com.woniu.params.ChangeGoodsStateParam;
import com.woniu.params.ListingGoodsParam;
import com.woniu.params.ModifyGoodsParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 吴彦祖
 * @since 2024年05月25日
 */
public interface GoodsService extends IService<Goods> {
    /**
     * 分页加载商品信息
     * @param pageNum 第几页
     * @param pageSize 每页条数
     * @return
     */
    Page<Goods> loadAllPage(Integer pageNum, Integer pageSize);

    /**
     * 删除商品
     * @param ids 传入一个商品id 的集合
     * @return
     */
    List<Goods> delGoods(List<Integer> ids);

    /**
     * 修改商品信息 要先下架才能修改
     * @param param
     * @return 返回商品信息
     */
    Goods modifyGoods(ModifyGoodsParam param);

    /**
     * 上架商品
     * @param params
     * @return 返回要上架的商品信息
     */
    List<Goods> listing(List<ListingGoodsParam> params) throws Exception;

    /**
     * 添加商品
     * @param param
     * @return
     */
    Goods addGoods(AddGoodsParam param) throws Exception;

    /**
     * 下架商品
     * @param id 商品的id
     * @return 返回下架的商品信息
     */
    Goods offShelf(Integer id);

    /**
     * 修改商品状态
     * @param param 更改商品状态param
     */
    void changeGoodsState(ChangeGoodsStateParam param);

    /**
     * 根据id删除商品
     * @param goodsId 商品id
     * @return
     */
    void del(Integer goodsId);

    /**
     * 根据名字模糊查询药品
     * @param name 商品名称
     * @return 返回商品信息集合
     */
    Page<Goods> loadGoodsByName(String name, Integer pageNum, Integer pageSize);


    /**
     * 上传图片成功后,修改商品的图片地址
     * @param id 商品id
     *        img 图片地址
     * @return
     */
    void changePictor(Integer id, String img);

    /**
     * 上传商品图片
     * @param image 图片数据
     * @return
     */
    String uploadImg(MultipartFile image) throws Exception;
}
